/* pagination */
function gotoPage(linkObj, offset, callback) {
	var $pagination = $(linkObj).closest('.pagination');
	var pageNo = $('.pageNo:first', $pagination).val();
	if (pageNo == '') {
		pageNo = $('.pageNo:first', $pagination).html();
	}
	pageNo = Number(pageNo) + offset;
	var maxPageNo = $pagination.attr('maxPageNo');
	maxPageNo = Number(maxPageNo);
	if (pageNo < 1) {
		pageNo = 1;
	}
	if (pageNo > maxPageNo) {
		pageNo = maxPageNo;
	}
	callback(linkObj, pageNo);
}
function gotoPageOnEnter(inputObj, callback) {
	$(inputObj).one('keypress', function(event) {
		if (event.which == 13) {
			gotoPage(inputObj, 0, callback);
		}
	});
}

function gotoPageInfoPage(linkObj, pageNo) {
	var $pagination = $(linkObj).closest('.pagination');
	var $pageinfo = $('>.jpageinfo', $(linkObj).closest('.jform'));		// the list page
	var sort = $pageinfo.attr('sort');
	var dir = $pageinfo.attr('dir');
	var pageSize = Number($pageinfo.attr('pageSize'));
	
	pageNo = Number(pageNo);
	var maxPageNo = $pageinfo.attr('maxPageNo');
	maxPageNo = Number(maxPageNo);
	if (pageNo > maxPageNo) {
		pageNo = maxPageNo;
	}
	
	var start = (pageNo - 1) * pageSize;
	var end = start + pageSize;
	var totalCount = Number($('.totalCount:first', $pagination).html());
	if (end > totalCount) {
		end = totalCount;
	}
	
	var path = $pageinfo.attr('path') + '&start=' + start + '&limit=' + pageSize + '&sort=' + sort + '&dir=' + dir;
	$.ajax({
		url: path,
		cache: false,
		beforeSend: function() {
			$pageinfo.find('>div>table>tbody>tr:first').addClass("loading");
		},
		success: function(data) {
			$pageinfo.find('>div>table>tbody>tr:first').removeClass("loading");
			$pageinfo.replaceWith(data);
			var $pagination = $(linkObj).closest('.pagination');
			$('.pageNo:first', $pagination).val(pageNo);
			if (end == 0) {
				$('.curPageStart:first', $pagination).html(0);
			} else {				
				$('.curPageStart:first', $pagination).html(start + 1);
			}
			$('.curPageEnd:first', $pagination).html(end);
		}
	});
}

function sortSearch(linkObj) {
	var $linkObj = $(linkObj);
	var $pagination = $linkObj.closest('.jpageinfo');
	$pagination.attr('sort', $linkObj.attr('sort'));
	$pagination.attr('dir', $linkObj.attr('dir'));
	gotoPageInfoPage(linkObj, 1);
}






